João Vitor Pataca Beinotti

A)

Leitura e tratamento inicial dos dados

Lendo o dataset disponibilizado

Exibindo as caracteristicas do dataset

As covariaveis não possuem dados faltantes significativos, com exceção das variaveis 'id_travel_agency_booking' e 'id_person_booking'. Portanto, devido a natureza dos dados que possuem elementos NA será usado um valor/string especifica para representar essa ocorrência

Após fazer um breve tratamento dos dados, será feito agora uma checagem em relação a correlação das variaveis, no intuito de identificar variaveis que na pratica representam a mesma informação ou comportamento

Como não foi encontrado correlação expressiva com nenhum par de covariaveis, não será descartado nenhuma varivel no modelo

Analise descritiva

Faremos primeiramente uma analise da relação entre o tipo do Hotel e o cancelamento da estadia

Analisaremos agora a porcentagem que esses cancelamentos representam e cada grupo

Podemos observar portanto que apesar da quantidade absoluta de cancelamentos em Hotel é aproximadamente 3 vezes maior que o de Fancy Hotel, temos que essa relação é um pouco menos discrepante quando considerado o total de eventos de ambos os tipos

Faremos agora a analise para o NUMERO DE NOITES agendadas em relação ao cancelamento

Faremos agora a analise para o NUMERO DE PESSOAS agendadas em relação ao cancelamento

Analisaremos primeiramente as variaveis ('num_adults', 'num_children', 'num_babies') de forma separada, para entender o comportamento de cada uma em relação ao cancelamento

Para entender quais são as principais combinações de pessoas que fazem o cancelamento, faremos a analise da combinação das 3 variaveis, obtendo assim a tabela abaixo

Temos portanto a relação tanto do numero de cancelamentos em relação a cada combinação de parametro, assim como sua porcentagem de acordo com a amostra disponibilizada.

B)

Modelos Preditivos (Classificação)

Como temos covariaveis que possuem informações importantes para o modelo, porém estão em string, será usado o encoding para reorganizar as respostas em valores binários, de forma a identificar se o evento possui ou não aquela caracteristica

Faremos agora a separação do conjunto de teste e treino, de forma aleatoria, com 20% do conjunto destinado a teste

Usando MLP

Usando Decision Tree Classifier

Usando Random Forest Classifier

C)

Conclusão

Como encontramos que a classificação por Random Forest apresentou melhor resultado, vamos realizar o cross-validation para esse preditor.

Será aplicado também um GridSearch, no intuito de encontrar os hiperparametros que proporcionam o melhor resultado de acordo com a métrica escolhida

Considerando portanto o preditor usando Random Forest Tree, aplicaremos um gridsearch com cross-validation 5 para identificar o modelos cujos hiperparemtros resultam no melhor resultado

Separação Aleatória vs Temporal

Temos que a separação temporal tem como objetivo, normalmente, de criar um modelo que consiga prever o comportamento de uma determinada variavel resposta de acordo com o seu comportamento em periodos anteriores, conseguindo até mesmo identificar comportamentos diversos em diferentes sazonalidades. Como por exemplo, a previsão do comportamento de preço de um produto ou de uma ação para um determinado periodo futuro.

Porém, para nesse caso em especifico, a sazonalidade de cancelamentos não é tão concretamente estabelecida, assim como ocorre em casos de operações fraudulentas em cartões de credito, os casos são identificados principalmente relacionado as demais covariaveis/informações sobre o evento.

Sendo assim, é suspeitado que a separação aleatória irá performar melhor nesse caso, uma vez que permitirá o modelo identificar a a relevancia de cada variavel, assim como a do tempo de todo o conjunto disponibilizado para fazer a previsão de futuros clientes. Evitando assim, a previsão errada, de determinados eventos, devido ao fato do ultimo periodo não apresentar comportamento semelhante aos anteriores, por motivos diversos.


Faremos portanto o teste separando o conjunto de dados de treino e teste pelo ano registrado (treino em 2015 e 2016 e teste/validação em 2017)

Confirmando assim, que para esse caso, temos que o modelo treinado com a separação randômica possui resultado superior